在開發程式時常常會遇到執行錯誤的狀況,今天要介紹的例外處理屬於流程控制的一種,可以蒐集錯誤訊息並處理錯誤,避免整個程式因為發生錯誤而停止執行。
下圖是 JavaScript 中常見的錯誤類型:
有時上述的錯誤會在使用者執行的時候出現,因此可以使用例外處理把程式拋出的錯誤訊息蒐集起來,並在程式出錯時執行指定程式碼進行錯誤後的處理。
try {
// statements
} catch (err) {
// statements
} [finally {
// statements
}]
try {}
區塊內放的是預期可能會發生錯誤的程式碼。catch {}
區塊內放的是出現錯誤時,要被執行的處理程式碼。err
是發生的錯誤的類型。finally {}
區域可省略,是最後會被執行的程式碼。try {
console.log(a);
} catch(err) {
console.log(err.name + ': ' + err.message);
} finally {
console.log("Stopping print a.");
}
console.log(a);
沒有使用try...catch
語法,是不會讓程式繼續執行console.log("Stopping print a.");
的:如果想把ReferenceError: a is not defined
的錯誤訊息翻成中文,可以用throw
語法客製化錯誤訊息:
try {
console.log(a);
throw new Error("a 沒有被定義!");
} catch(err) {
console.log(err.name + ': ' + err.message);
}
可以看到使用throw
語法後的錯誤類型變成 Error,詳細錯誤訊息被改成a 沒有被定義!
。所以輸出的err.name、err.message 也會跟著被更改。